<?php

/*
 * class HTTPRequest
 * 
 * Questa classe svolge funzione di wrapper attorno
 * alle variabili $_GET e $_POST e mette a disposizione
 * metodi di utilità per operare su quest'ultime
 * 
 */
class HTTPRequest
{
	/*
	 * mixed getParam ( string $param, mixed $defaul)
	 * Se invocata senza parametri, restituisce il dump
	 * delle variabili $_GET e $_POST
	 * Restituisce il valore di $param, guardando prima in $_GET,
	 * e successivamente in $_POST. Restituisce $default
	 * se non trova $param
	 */
	public function getParam($param = null, $default = null) {
		if (empty($param)) {
			return array(
				'GET' => $_GET,
				'POST' => $_POST
			);
		}
		elseif (isset($_REQUEST[$param])) {
			return $this->_unescape($_REQUEST[$param]);
		}
		else {
			return $default;
		}
	}
	
	/*
	 * mixed getPost ( string $param, mixed $defaul)
	 * Se invocata senza parametri, restituisce il dump
	 * della variabile $_POST
	 * Restituisce il valore di $param, guardando in $_POST.
	 * Restituisce $default se non trova $param
	 */
	public function getPost($param = null, $default = null) {
		if (empty($param)) {
			return array ('POST' => $_POST);
		}
		elseif (isset($_POST[$param])) {
			return $this->_unescape($_POST[$param]);
		}
		else {
			return $default;
		}
	}
	
	/*
	 * bool isGet (string $param)
	 * Se invocato senza parametri, restituisce true
	 * se $_GET è popolato.
	 * Restituisce true se $param è presente in $_GET
	 */
	public function isGet($param = null) {
		if (empty($param)) return !empty($_GET);
		return isset($_GET[$param]);
	}
	
	/*
	 * bool isPost (string $param)
	 * Se invocato senza parametri, restituisce true
	 * se $_POST è popolato.
	 * Restituisce true se $param è presente in $_POST
	 */
	public function isPost($param = null) {
		if (empty($param)) return !empty($_POST);
		return isset($_POST[$param]);
	}
	
	/*
	 * Metodo di gestione compatibilità cross-server
	 * tra configurazioni php differenti
	 */
	private function _unescape($var) {
		if (get_magic_quotes_gpc()) return stripslashes_deep($var);
		return $var;
	}
}